home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Interactive 7
/
PC World Interactive 7.iso
/
online
/
motor.EXE
/
SIRA.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-10-05
|
8KB
|
220 lines
begin
write('ѥ');
end.
cord
x1,y1,x2,y2,group:integer;
end;
poin=record
x,y :longint;
index:string[10];
end;
points=array [1..2200] of poin;
var
m,min,miny: integer;
point:points;
f1,f2,f3,f4,f5 :text;
number:integer;
count:integer;
getx,gety :integer;
counth,countv:integer;
x1limit,x2limit,y1limit,y2limit :integer;
i,j,d1,d2 :integer;
rec :string[10];
ylocation,xlocation :integer;
x1,x2,y1,y2 :string[5];
temp:real;
groupv,grouph :longint;
grdriver,grmode :integer;
horz,ver,lines:array[1..200] of lin;
str2,str1,s :string;
temp1 :real;
label 10,20,30;
procedure quicksort(var a: points; Lo,Hi: integer);
procedure sort(l,r: integer);
var
i,j:integer;
x,y: string[10];
xp,yp :poin;
begin
i:=l; j:=r; x:=a[(l+r) DIV 2].index;
repeat
while a[i].index<x do i:=i+1;
while x<a[j].index do j:=j-1;
if i<=j then
begin
yp:=a[i];
a[i]:=a[j];
a[j]:=yp;
i:=i+1; j:=j-1;
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin {quicksort};
sort(Lo,Hi);
end;
begin
min:=29999;
miny:=29999;
assign(f5,'dosya.dat');reset(f5);readln(f5,s);
assign(f1,s+'.dxf');
reset(f1);
str2:='';
count:=0;
{****** READLN ****}
{****** READLN ****}
{****** READLN ****}
while str2 <> 'ENDSEC' do
begin
readln(f1,str2);
if str2='ENTITIES' then
begin
readln(f1,str2);
rec:='start';
end;
if rec='start' then
begin
readln(f1,str2);
if str2='LINE' then
begin
count:=count+1;
readln(f1,str2);
readln(f1,str2);
readln(f1,str2);
readln(f1,x1);
readln(f1,str2);
readln(f1,y1);
readln(f1,str2);
readln(f1,x2);
readln(f1,str2);
readln(f1,y2);
val(x1,lines[count].x1,i);
val(y1,lines[count].y1,i);
val(x2,lines[count].x2,i);
val(y2,lines[count].y2,i);
end;
end;
end;
counth:=0;
countv:=0;
for d1:=1 to count do
begin
if (lines[d1].x1-lines[d1].x2)=0 then
begin
countv:=countv+1;
ver[countv].x1:=lines[d1].x1;
ver[countv].y1:=lines[d1].y1;
ver[countv].x2:=lines[d1].x2;
ver[countv].y2:=lines[d1].y2;
end;
if (lines[d1].y1-lines[d1].y2)= 0 then
begin
counth:=counth+1;
horz[counth].x1:=lines[d1].x1;
horz[counth].y1:=lines[d1].y1;
horz[counth].x2:=lines[d1].x2;
horz[counth].y2:=lines[d1].y2;
end;
end;
{******Points******}
i:=0;
assign(f3,'sira.dat');
rewrite(f3);
for d2:=1 to counth do
begin
for d1:=1 to countv do
begin
if (ver[d1].y2 > ver[d1].y1) and (horz[d2].x2 > horz[d2].x1) then
if (ver[d1].x1 >= horz[d2].x1) and (ver[d1].x1 <= horz[d2]. x2 ) and
(horz[d2].y1 >= ver[d1].y1) and (horz[d2].y1 <=ver[d1].y2) then
begin
i:=i+1;
point[i].x:=ver[d1].x1;
point[i].y:=horz[d2].y1;
end;
if (ver[d1].y2 < ver[d1].y1) and (horz[d2].x2 > horz[d2].x1) then
if (ver[d1].x1 >= horz[d2].x1) and (ver[d1].x1 <= horz[d2]. x2 ) and
(horz[d2].y1 <= ver[d1].y1) and (horz[d2].y1 >=ver[d1].y2) then
begin
i:=i+1;
point[i].x:=ver[d1].x1;
point[i].y:=horz[d2].y1;
end;
if (ver[d1].y2 > ver[d1].y1) and (horz[d2].x2 < horz[d2].x1) then
if (ver[d1].x1 <= horz[d2].x1) and (ver[d1].x1 >= horz[d2]. x2 ) and
(horz[d2].y1 >= ver[d1].y1) and (horz[d2].y1 <=ver[d1].y2) then
begin
i:=i+1;
point[i].x:=ver[d1].x1;
point[i].y:=horz[d2].y1;
end;
if (ver[d1].y2 < ver[d1].y1) and (horz[d2].x2 < horz[d2].x1) then
if (ver[d1].x1 <= horz[d2].x1) and (ver[d1].x1 >= horz[d2]. x2 ) and
(horz[d2].y1 <= ver[d1].y1) and (horz[d2].y1 >=ver[d1].y2) then
begin
i:=i+1;
point[i].x:=ver[d1].x1;
point[i].y:=horz[d2].y1;
if point[i].x < min then
min:=point[i].x;
if point[i].y < miny then
miny:=point[i].y;
end;
end;
end;
begin;
i:=1;
m:=1;
30: writeln(f3,m,' ',point[i].x,' ',point[i].y);
i:=m+1;
m:=m+1;
if not (point[i].x = 0) and not (point[i].y = 0) then goto 30;
end;
close(f3);
str(counth,str1);
{******INDEX VARIABLE******}
for j:=1 to i do
begin
temp:=((point[j].y-miny)*10000+(point[j].x-min));
str(temp:6:3,str1);
point[j].index:=str1;
end;
quicksort(point,1,i);
for d1:=1 to count do
begin
end;
for d1:=1 to i do
begin
str(d1,str1);
end;
close(f1);
end.uses crt;
type
lin=record
x1,y1,x2,y2,group:integer;
end;
poin=record
x,y :longint;
index:string[10];
end;
points=array [1..2200] of poin;
var
m,min,miny: integer;
point:points;
f1,f2,f3,f4